//
//  DHLsitViewController.m
//  NavigationDemo
//
//  Created by 证联 on 2022/7/8.
//

#import "DHLsitViewController.h"
#import "DHGroup.h"
#import "DHListCell.h"
#import "DHTableViewCell.h"

@interface DHLsitViewController () <UITableViewDataSource,UITableViewDelegate>

@property (weak, nonatomic) IBOutlet UITableView *TableView;
@property (nonatomic ,strong) NSArray * groups;

@end

@implementation DHLsitViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.TableView.dataSource=self;
    self.TableView.delegate=self;
//    UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
//    //只可以修改 x和height 的值，
//    btn.frame=CGRectMake(0, 10, 8, 40);
//
//    btn.backgroundColor=[UIColor redColor];
//    btn.titleLabel.text=@"加载。。。。";
    
    //xib
    
    //底部加载更多
//    self.TableView.tableFooterView=btn;
    
}
//数据源
- (NSArray *)groups{
    if(_groups == nil){
        //A:懒加载数据找到plist文件的路径
        NSString *path = [[NSBundle mainBundle] pathForResource:@"cars_simple.plist" ofType:nil ];
        
        //B:加载plist文件
        NSArray *arrayModel =[NSArray arrayWithContentsOfFile:path];
        
        //C:将字典转换成模型
        
        //创建可变数组
        NSMutableArray *model =[NSMutableArray array];
        //遍历数组的🇺🇸字典,将字典转成模型
        for (NSDictionary *dic in arrayModel) {
            //创建模型对象
            DHGroup *group =[DHGroup groupWithDict:dic];
            //将对象添加数组中
            [model addObject:group];
            
        }
        
        _groups=model;
        
    }
    return  _groups;
}
#pragma mark 返回分组数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.groups.count;
}
#pragma mark 返回每组显示几行数据
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    //根据组索引 获取对象
    DHGroup *group =self.groups[section];
    return group.cars.count;
}
#pragma mark 返回每行的单元格
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//    //1，根据重用ID(list_id) 去缓存池中查找对应的cell
//    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"list_id"];
//    if (!cell) {
//        //空，则创建一个UITableViewCell
//        cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"list_id"];
//    }
    
//    static NSString *ID=@"cell_id";
    
    ///1,纯代码创建cell
//    DHListCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
//       if (cell==nil) {
//           cell=[[DHListCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
//       }
    
    ///2.1,xib创建cell
//    DHTableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
//    if (cell == nil) {
//        cell = [[[NSBundle mainBundle] loadNibNamed:@"DHTableViewCell" owner:nil options:nil]firstObject ] ;
//    }
    
    //2.2 xib创建cell
    DHTableViewCell *cell = [DHTableViewCell groupCellWithTableView:tableView];
    
    //2，获取模型数据
    DHGroup *group = self.groups[indexPath.section];
    NSString *text = group.cars[indexPath.row];
    //3，把模型中的数据设置给单元格中的控件
//    cell.msg.text =text;
//    [cell.messageBtn addTarget:self action:@selector(messageBtnClick:) forControlEvents:UIControlEventTouchUpInside];
    cell.group=text;
    
    //4，返回单元格
    return cell;
}
#pragma mark 返回每组头标题名称
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    DHGroup *group=  self.groups[section];
    return group.title;
}
#pragma mark 返回每组尾部说明
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{

    DHGroup *group=  self.groups[section];
    return group.desc;

}
#pragma mark 返回每组标题索引
//- (NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView{
//    return [self.groups valueForKeyPath:@"title"];
//}
#pragma mark 设置某行是否可编辑

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}
#pragma mark设置某行是否可以被移动
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{
    return YES;
}
#pragma mark --代理方法--

#pragma mark  设置每行高度（每行高度可以不一样）
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    return 80;
}
#pragma mark 设置分组标题内容高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 60;
}
#pragma mark 设置尾部说明内容高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 60;
}
#pragma  mark --点击事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"点击 第%lu组，第%lu行", (long)indexPath.section ,(long)indexPath.row);
}
-(IBAction)messageBtnClick:(id)sender{
    NSLog(@"点击 -----");
}



@end
